SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_Q54]
/*-------------------------------------------------------------------*/            
/*----- Empresa           : OFISIS S.A.                          ----*/            
/*----- Cliente           : OFISIS S.A.                          ----*/            
/*----- Sistema           : Contabilidad                         ----*/            
/*----- Modulo            : Empresa                              ----*/            
/*----- Programa          : Libro de Retenciones                 ----*/            
/*----- Nombre            : SP_TXMVTO_CNTB_Q54                   ----*/            
/*----- Script            : TXMVTO_CNTB                          ----*/            
/*----- Desarrollado por  : RCLL                                 ----*/            
/*----- Fecha             : 04/01/2008                           ----*/            
/*----- Base de Datos     : MS SQL Server                        ----*/            
/*----- Version BD        : 2005                                 ----*/            
/*-------------------------------------------------------------------*/            
/*---- Modificado 1 por     :                                    ----*/              
/*---- Fecha Modificaci?n   :                                    ----*/                  
/*---- Detalle Modificaci?n :									 ----*/                
/*-------------------------------------------------------------------*/            
/*----- Drop proc SP_TXMVTO_CNTB_Q54                             ----*/            
/*----- Grant all on SP_TXMVTO_CNTB_Q54 to PUBLIC                ----*/            
/*-----EXECUTE  SP_TXMVTO_CNTB_Q54 '01',1,2007,2,'00002222222','00002222222','T'          ----*/            
/*-------------------------------------------------------------------*/ 
@ISCO_EMPR TD_VC_002,            
@INNU_CNTB_EMPR TD_IN_001_CONT,            
@INNU_ANNO TD_IN_004_ANNO,            
@INNU_MESE TD_IN_002_MESE,             
@ISCO_AUXI_INIC  TD_VC_020,
@ISCO_AUXI_FINA  TD_VC_020,
@ISTI_REPO   TD_VC_002
AS

DECLARE
@CSCO_UNID_CNTB TD_VC_003, 
@CSCO_OPRC_CNTB TD_VC_003,
@CSNU_ASTO TD_VC_020,
@VDFE_DOCU TD_DT_001,
@VDFE_DOCU_VENC TD_DT_001,
@CSCO_MONE    TD_VC_003,
@CNIM_MVTO_ORIG TD_NU_016_004, 
@CNIM_MVTO_CNTB TD_NU_016_004,
@VSCO_AUXI_EMPR TD_VC_020,
@VSTI_DOCU		TD_VC_003,
@VSNU_DOCU		TD_VC_020,
@VNIM_MVTO_RETR TD_NU_016_004,
@VSCO_DOCU_SUNA TD_VC_003,
@VSNU_DOCU_SUNA TD_VC_020,
@VSNO_AUXI		TD_VC_050,
@CSCO_UNID_CNT2 TD_VC_003,
@VSCO_DOCU_SUN2 TD_VC_020,
@CSCO_OPRC_CNT2 TD_VC_003,
@VSNU_DOCU_SUN2 TD_VC_020,
@CSNU_AST2 TD_VC_020,
@VSNO_AUX2 TD_VC_050,
@CDFE_DOCU TD_DT_001,
@CSCO_AUXI_EMPR TD_VC_020,
@CDFE_DOCU_VENC TD_DT_001,
@CSTI_DOCU TD_VC_003,
@CSCO_MON2 TD_VC_003,
@CSNU_DOCU TD_VC_020,
@CNIM_MVTO_ORI2 TD_NU_016_004,
@CNIM_MVTO_CNT2 TD_NU_016_004,
@VNIM_MVTO_RETE TD_NU_016_004,
@VSWH_LOCA VARCHAR(200),
@VSNU_ANNO TD_VC_020


CREATE TABLE #TWTXMVTO_CNTB_Q54_1
(CO_UNID_CNTB VARCHAR(3),
 CO_OPRC_CNTB VARCHAR(3),
 NU_ANNO      INT,
 NU_MESE      INT,
 NU_ASTO	  VARCHAR(20),
 FE_DOCU	  DATETIME, 
 FE_DOCU_VENC DATETIME,
 CO_MONE	  VARCHAR(3),
 CO_DOCU_SUNA VARCHAR(3),
 NU_DOCU_SUNA VARCHAR(20),
 NO_AUXI	  VARCHAR(100),
 TI_DOCU	  VARCHAR(3),
 NU_DOCU	  VARCHAR(20),
 IM_MVTO_RETR DECIMAL(16,4),
 IM_MVTO_RETE DECIMAL(16,4),
 IM_MVTO_NETO DECIMAL (16,4))

CREATE TABLE #TWTXMVTO_CNTB_Q54_2
(CO_UNID_CNTB VARCHAR(3),
 CO_OPRC_CNTB VARCHAR(3),
 NU_ANNO      INT,
 NU_MESE      INT,
 NU_ASTO	  VARCHAR(20),
 FE_DOCU	  DATETIME, 
 FE_DOCU_VENC DATETIME,
 CO_MONE	  VARCHAR(3),
 CO_DOCU_SUNA VARCHAR(3),
 NU_DOCU_SUNA VARCHAR(20),
 NO_AUXI	  VARCHAR(100),
 TI_DOCU	  VARCHAR(3),
 NU_DOCU	  VARCHAR(20),
 IM_MVTO_RETR DECIMAL(16,4),
 IM_MVTO_RETE DECIMAL(16,4),
 IM_MVTO_NETO DECIMAL (16,4))

IF @ISCO_AUXI_INIC <>'' AND @ISCO_AUXI_FINA <>''
BEGIN
 SELECT @VSWH_LOCA=' AND NU_DOCU_SUNA >=' + @ISCO_AUXI_INIC + ' AND NU_DOCU_SUNA <= ' + @ISCO_AUXI_FINA 
END

---OBTENIENDO LOS REGISTROS QUE HAYAN SUFRIDO RETENCIONES
Declare CU_TXMVTO_CNTB_Q54_1 Cursor  
For  
	Select t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ASTO,   
	t1.CO_MONE,t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB
	from TXMVTO_CNTB t1
	Where t1.CO_EMPR = @ISCO_EMPR 
	and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
	and t1.NU_ANNO = @INNU_ANNO
	and t1.NU_MESE = @INNU_MESE
	and t1.CO_CNTA_EMPR In (SELECT CO_CNTA_EMPR FROM TTIDEN_CNTA  
                                          WHERE CO_EMPR = @ISCO_EMPR  
                                           AND NU_CNTB_EMPR = @INNU_CNTB_EMPR  
                                           AND ID_CNTA ='018')

Open CU_TXMVTO_CNTB_Q54_1  
Fetch CU_TXMVTO_CNTB_Q54_1 into @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,@CSNU_ASTO,
@CSCO_MONE,@CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB 

	While @@Fetch_Status = 0  
	Begin  
    
	Select @VSCO_AUXI_EMPR=CO_AUXI_EMPR,@VSTI_DOCU=TI_DOCU,@VSNU_DOCU=NU_DOCU,
	@VNIM_MVTO_RETR=IM_MVTO_CNTB,@VDFE_DOCU=t1.FE_DOCU,@VDFE_DOCU_VENC=t1.FE_DOCU_VENC
	from TXMVTO_CNTB t1
	Where t1.CO_EMPR = @ISCO_EMPR  
	and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
    and	t1.CO_UNID_CNTB= @CSCO_UNID_CNTB
    and t1.CO_OPRC_CNTB=@CSCO_OPRC_CNTB
    and t1.CO_CNTA_EMPR IN (SELECT CO_CNTA_EMPR FROM TTIDEN_CNTA  
                                          WHERE CO_EMPR =@ISCO_EMPR 
                                           AND NU_CNTB_EMPR = @INNU_CNTB_EMPR  
                                           AND ID_CNTA ='001')
	and t1.NU_ANNO = @INNU_ANNO
	and t1.NU_MESE = @INNU_MESE
	and t1.NU_ASTO=@CSNU_ASTO

	SELECT @VSCO_DOCU_SUNA=CO_DOCU_SUNA,@VSNU_DOCU_SUNA=NU_DOCU_SUNA,
	@VSNO_AUXI=NO_AUXI FROM TMAUXI_EMPR
	WHERE CO_EMPR=@ISCO_EMPR
	AND CO_AUXI_EMPR=@VSCO_AUXI_EMPR
	
	INSERT INTO #TWTXMVTO_CNTB_Q54_1(CO_UNID_CNTB,CO_OPRC_CNTB,NU_ANNO,NU_MESE,NU_ASTO,FE_DOCU,FE_DOCU_VENC,
    CO_MONE,CO_DOCU_SUNA,NU_DOCU_SUNA,NO_AUXI,TI_DOCU,NU_DOCU,IM_MVTO_RETR,IM_MVTO_RETE,IM_MVTO_NETO) 
    VALUES(@CSCO_UNID_CNTB,@CSCO_OPRC_CNTB,@INNU_ANNO,@INNU_MESE,@CSNU_ASTO,@VDFE_DOCU,
	@VDFE_DOCU_VENC,@CSCO_MONE,@VSCO_DOCU_SUNA,@VSNU_DOCU_SUNA,@VSNO_AUXI,@VSTI_DOCU,@VSNU_DOCU,
	@VNIM_MVTO_RETR,@CNIM_MVTO_CNTB,@VNIM_MVTO_RETR - @CNIM_MVTO_CNTB )

	
Fetch CU_TXMVTO_CNTB_Q54_1 Into  @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,@CSNU_ASTO,
@CSCO_MONE,@CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB           
            
End               
            
Close CU_TXMVTO_CNTB_Q54_1            
Deallocate CU_TXMVTO_CNTB_Q54_1   

---OBTENIENDO LOS QUE NO TIENEN RETENCIONES 

	Declare CU_TXMVTO_CNTB_Q54_2 Cursor  
	For  
		Select t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ASTO,t1.FE_DOCU,t1.FE_DOCU_VENC,t1.CO_AUXI_EMPR,   
		t1.TI_DOCU,t1.NU_DOCU,t1.CO_MONE,t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB
		from TXMVTO_CNTB t1
		Where t1.CO_EMPR = @ISCO_EMPR 
		and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
		and t1.NU_ANNO = @INNU_ANNO
		and t1.NU_MESE = @INNU_MESE
		AND t1.TI_DOCU IN (SELECT TI_DOCU FROM TTDOCU_CNTB WHERE ST_DOCU_0010='S')

	Open CU_TXMVTO_CNTB_Q54_2  
	Fetch CU_TXMVTO_CNTB_Q54_2 into @CSCO_UNID_CNT2, @CSCO_OPRC_CNT2,@CSNU_AST2,
	@CDFE_DOCU,@CDFE_DOCU_VENC,@CSCO_AUXI_EMPR,@CSTI_DOCU,@CSNU_DOCU,
	@CSCO_MON2,@CNIM_MVTO_ORI2,@CNIM_MVTO_CNT2           

	While @@Fetch_Status = 0  
		Begin  
		
		SELECT @VNIM_MVTO_RETE=0.00
		
		SELECT @VSCO_DOCU_SUN2=CO_DOCU_SUNA,@VSNU_DOCU_SUN2=NU_DOCU_SUNA,
		@VSNO_AUX2=NO_AUXI FROM TMAUXI_EMPR
		WHERE CO_EMPR=@ISCO_EMPR
		AND CO_AUXI_EMPR=@CSCO_AUXI_EMPR

	
		Select  @VNIM_MVTO_RETE=t1.IM_MVTO_CNTB
		from TXMVTO_CNTB t1
		Where t1.CO_EMPR = @ISCO_EMPR 
		and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
        and t1.CO_UNID_CNTB=@CSCO_UNID_CNT2
		and t1.CO_OPRC_CNTB=@CSCO_OPRC_CNT2
		and t1.NU_ANNO = @INNU_ANNO
		and t1.NU_MESE = @INNU_MESE
		and t1.CO_CNTA_EMPR In (SELECT CO_CNTA_EMPR FROM TTIDEN_CNTA  
                                          WHERE CO_EMPR = @ISCO_EMPR  
                                           AND NU_CNTB_EMPR = @INNU_CNTB_EMPR  
                                           AND ID_CNTA ='018')
		and t1.NU_ASTO=@CSNU_AST2

		INSERT INTO #TWTXMVTO_CNTB_Q54_2(CO_UNID_CNTB,CO_OPRC_CNTB,NU_ANNO,NU_MESE,NU_ASTO,FE_DOCU,FE_DOCU_VENC,
		CO_MONE,CO_DOCU_SUNA,NU_DOCU_SUNA,NO_AUXI,TI_DOCU,NU_DOCU,IM_MVTO_RETR,IM_MVTO_RETE,IM_MVTO_NETO) 
		VALUES(@CSCO_UNID_CNT2,@CSCO_OPRC_CNT2,@INNU_ANNO,@INNU_MESE,@CSNU_AST2,@CDFE_DOCU,
		@CDFE_DOCU_VENC,@CSCO_MON2,@VSCO_DOCU_SUN2,@VSNU_DOCU_SUN2,@VSNO_AUX2,@CSTI_DOCU,@CSNU_DOCU,
		@CNIM_MVTO_CNT2,@VNIM_MVTO_RETE,@CNIM_MVTO_CNT2-@VNIM_MVTO_RETE)
		
	
	Fetch CU_TXMVTO_CNTB_Q54_2 Into  @CSCO_UNID_CNT2, @CSCO_OPRC_CNT2,@CSNU_AST2,
	@CDFE_DOCU,@CDFE_DOCU_VENC,@CSCO_AUXI_EMPR,@CSTI_DOCU,@CSNU_DOCU,
	@CSCO_MON2,@CNIM_MVTO_ORI2,@CNIM_MVTO_CNT2           
            
	End               
            
	Close CU_TXMVTO_CNTB_Q54_2            
	Deallocate CU_TXMVTO_CNTB_Q54_2   

Select @VSNU_ANNO = Convert(Varchar, @INNU_ANNO)     

IF @ISTI_REPO='S'
BEGIN
		EXEC('SELECT NU_ANNO,NU_MESE,FE_DOCU,FE_DOCU_VENC,
		CO_DOCU_SUNA,NU_DOCU_SUNA,NO_AUXI,TI_DOCU,NU_DOCU,IM_MVTO_RETR,IM_MVTO_RETE,IM_MVTO_NETO 
		FROM #TWTXMVTO_CNTB_Q54_1
		WHERE NU_ANNO=' + @VSNU_ANNO  + @VSWH_LOCA +' 
		ORDER BY FE_DOCU')

END 

IF @ISTI_REPO='T'
BEGIN 
	
		EXEC('SELECT NU_ANNO,NU_MESE,FE_DOCU,FE_DOCU_VENC,
		CO_DOCU_SUNA,NU_DOCU_SUNA,NO_AUXI,TI_DOCU,NU_DOCU,IM_MVTO_RETR,IM_MVTO_RETE,IM_MVTO_NETO 
		FROM #TWTXMVTO_CNTB_Q54_2
		WHERE NU_ANNO =' + @VSNU_ANNO  + @VSWH_LOCA +' 
		ORDER BY FE_DOCU')
END

GO
